package com.huilian.iotbox.data.service.impl;

import com.huilian.iotbox.data.enums.DeviceTypeEnum;
import com.huilian.iotbox.data.enums.IOTBoxTCPEnum;
import com.huilian.iotbox.data.po.Product;
import com.huilian.iotbox.data.po.ProductFunc;
import com.huilian.iotbox.data.service.ProductFuncCommonService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;

@Slf4j
@Service
public class ProductFuncCommonServiceImpl implements ProductFuncCommonService {

    /**
     * 获取产品的10进制查询参数code和设置参数code
     *
     * @param inProductFunc
     * @param product
     */
    @Override
    public void getProductFuncSetAndQueryCodeByDecimal(ProductFunc inProductFunc, Product product) {
        if (DeviceTypeEnum.CONVERTIBLE_CURRENCY_MACHINE.getCode().equals(product.getDeviceTypeId()) || DeviceTypeEnum.SUPER_MONEY_CHANGER.getCode().equals(product.getDeviceTypeId())) {
            // 兑币机查询参数code和设置参数code
            inProductFunc.setQueryFunCode(IOTBoxTCPEnum.QUERYING_TERMINAL_PARAMETERS.getDecimal());
            inProductFunc.setSetFunCode(IOTBoxTCPEnum.DUIBI_SET_PARAM.getDecimal());
            log.info(String.format("兑币机查询参数code和设置参数code，queryFunCode：%s，setFunCode：%s", inProductFunc.getQueryFunCode(), inProductFunc.getSetFunCode()));
        } else if (DeviceTypeEnum.BATTERY_CAR_CHARGING_PILE.getCode().equals(product.getDeviceTypeId())) {
            // 充电桩查询参数code和设置参数code
            inProductFunc.setQueryFunCode(IOTBoxTCPEnum.QUERYING_TERMINAL_PARAMETERS_BATTERY_CAR_CHARGING_PILE.getDecimal());
            inProductFunc.setSetFunCode(IOTBoxTCPEnum.SET_TERMINAL_PARAMETERS_BATTERY_CAR_CHARGING_PILE.getDecimal());
            log.info(String.format("充电桩查询参数code和设置参数code，queryFunCode：%s，setFunCode：%s", inProductFunc.getQueryFunCode(), inProductFunc.getSetFunCode()));
        } else if (DeviceTypeEnum.HAO_JI_LE_PERAMBULATOR.getCode().equals(product.getDeviceTypeId())) {
            // 儿童车查询参数code和设置参数code
            inProductFunc.setQueryFunCode(IOTBoxTCPEnum.HAO_JI_LE_QUERY_PARAM.getDecimal());
            inProductFunc.setSetFunCode(IOTBoxTCPEnum.HAO_JI_LE_SET_PARAM.getDecimal());
            log.info(String.format("儿童车查询参数code和设置参数code，queryFunCode：%s，setFunCode：%s", inProductFunc.getQueryFunCode(), inProductFunc.getSetFunCode()));
        } else {
            // 通用查询参数code和设置参数code
            inProductFunc.setQueryFunCode(IOTBoxTCPEnum.QUERYING_TERMINAL_PARAMETERS.getDecimal());
            inProductFunc.setSetFunCode(IOTBoxTCPEnum.SET_TERMINAL_PARAMETERS.getDecimal());
            log.info(String.format("通用查询参数code和设置参数code，queryFunCode：%s，setFunCode：%s", inProductFunc.getQueryFunCode(), inProductFunc.getSetFunCode()));
        }
    }

    /**
     * 获取产品的10进制故障参数code
     *
     * @param inProductFunc
     * @param product
     */
    @Override
    public void getProductFaultParameterByDecimal(ProductFunc inProductFunc, Product product) {
        if (DeviceTypeEnum.CONVERTIBLE_CURRENCY_MACHINE.getCode().equals(product.getDeviceTypeId()) || DeviceTypeEnum.SUPER_MONEY_CHANGER.getCode().equals(product.getDeviceTypeId())) {
            inProductFunc.setQueryFunCode(IOTBoxTCPEnum.UPLOAD_ACCOUNT_INCREMENT_BY_DUIBIJI.getDecimal());
        } else if (DeviceTypeEnum.BATTERY_CAR_CHARGING_PILE.getCode().equals(product.getDeviceTypeId())) {
            inProductFunc.setQueryFunCode(IOTBoxTCPEnum.FAULT_PARAMETERS_BATTERY_CAR_CHARGING_PILE.getDecimal());
        } else if (DeviceTypeEnum.HAO_JI_LE_PERAMBULATOR.getCode().equals(product.getDeviceTypeId())) {
            inProductFunc.setQueryFunCode(IOTBoxTCPEnum.HAO_JI_LE_FAULT_REPORTING.getDecimal());
        } else {
            inProductFunc.setQueryFunCode(IOTBoxTCPEnum.TERMINAL_ACTIVELY_UPLOADS_THE_ACCOUNT_INCREMENT.getDecimal());
        }
    }
}
